import axios from "axios";
import { ElMessageBox } from "element-plus";
import router from "@/router";
//配置axios
let http = axios.create({
  //基础地址
  baseURL: "/api",
  //超时设置
  timeout: 1000 * 10,
  //是否携带凭据
  withCredential: true,
});
//配置拦截器
//请求拦截器
http.interceptors.request.use((config) => {
  let token = sessionStorage.getItem("qf-token");
  config.headers.authorization = token;
  return config;
});
//响应拦截器
http.interceptors.response.use((config) => {
  //config每个请求响应的结果，所有的请求返回的结果都需要经过这条门，才能到组件那

  // console.log("ElMessage", ElMessage);
  if (config.data.state) {
    return config;
  } else {
    //不需要弹框提示的路径
    let excludePaths = ["/sms/send"];
    // console.log(config);
    //如果excludePaths中不包含响应路径，则不需要全局的弹框提示
    if (!excludePaths.includes(config.config.url)) {
      //配置全局请求错误提示
      ElMessageBox.alert(config.data.msg, "错误提示", { type: "error" });
    }
    //判断登入失效的情况，1022（登入状态过期）、1004（token失效了)，前后端通俗约定状态码，并不是http状态码
    if (config.data.code == "10022" || config.data.code == "1004") {
      //退到登入页，然后清掉token
      router.push("/login");
      sessionStorage.removeItem("qf-token");
      //刷新页面，清掉缓存
      location.reload();
    }
    return Promise.reject(config.data.msg);
  }
});
export default http;
